home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Pascal Super Library
/
Pascal Super Library (CW International)(1997).bin
/
TURB_VIS
/
TCYBER25
/
CYEDIT.ZIP
/
CEDLGS.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-10-20
|
10KB
|
90 lines
{
Turbo Vision CyberTools 2.5
(C) 1994 Steve Goldsmith
All Rights Reserved
}
UNIT CEDLGS ;{$I APP.INC} INTERFACE USES DOS , OBJECTS , APP , VIEWS , DIALOGS , DRIVERS , VALIDATE , MSGBOX , VGA ,
TVSTR , COMMDLGS , CECMDS ;TYPE PCHRSETEDITVIEW =^TCHRSETEDITVIEW ;TCHRSETEDITVIEW =OBJECT (TVIEW)CHRVAL :LONGINT ;
PROCEDURE DRAW ;VIRTUAL;PROCEDURE HANDLEEVENT (VAR EVENT :TEVENT );VIRTUAL;END ;PCHRSETEDITDLG =^TCHRSETEDITDLG ;
TCHRSETEDITDLG =OBJECT (TDIALOG)PASTECHR :INTEGER ;CHRSTATUS :PINPUTLINE ;CHRVIEW :PCHRSETEDITVIEW ;CONSTRUCTOR INIT
(NAME :PATHSTR );PROCEDURE HANDLEEVENT (VAR EVENT :TEVENT );VIRTUAL;FUNCTION GETPALETTE :PPALETTE ;VIRTUAL;END ;
PCHREDITVIEW =^TCHREDITVIEW ;TCHREDITVIEW =OBJECT (TVIEW)FONTARRAY :ARRAY [ 0 .. 15 ] OF BYTE ;PROCEDURE DRAW ;VIRTUAL;
PROCEDURE HANDLEEVENT (VAR EVENT :TEVENT );VIRTUAL;END ;PCHREDITDLG =^TCHREDITDLG ;TCHREDITDLG =OBJECT (TDIALOG)CHRVAL ,
FONTTABLE :INTEGER ;CHREDITOR :PCHREDITVIEW ;CONSTRUCTOR INIT (C ,F:INTEGER );PROCEDURE SIZELIMITS
(VAR MIN ,MAX:TPOINT );VIRTUAL;END ;PICONVIEW =^TICONVIEW ;TICONVIEW =OBJECT (TVIEW)STARTCHR , ICONLEN :INTEGER ;
APPCOMMAND :WORD ;CONSTRUCTOR INIT (X ,Y,STCHR,ILEN:INTEGER );PROCEDURE DRAW ;VIRTUAL;PROCEDURE HANDLEEVENT
(VAR EVENT :TEVENT );VIRTUAL;PROCEDURE SETSTATE (ASTATE :WORD ;ENABLE :BOOLEAN );VIRTUAL;END ;
PTOOLBARDLG =^TTOOLBARDLG ;TTOOLBARDLG =OBJECT (TDIALOG)CONSTRUCTOR INIT (STCHR ,ILEN,ICONS:INTEGER ;STARTCMD :WORD );
PROCEDURE SIZELIMITS (VAR MIN ,MAX:TPOINT );VIRTUAL;END ;
IMPLEMENTATION PROCEDURE TCHRSETEDITVIEW.DRAW ;VAR OI1OllllOl1:TDRAWBUFFER;OOIO,OOIl:INTEGER;OOllOI000O1l:WORD;
BEGIN OOllOI000O1l := GETCOLOR (33 );FOR OOIl := 0 TO SIZE.Y - 1 DO BEGIN FOR OOIO := 0 TO SIZE.X - 1 DO OI1OllllOl1 [
OOIO ] := (OOIl * SIZE.X + OOIO )OR (OOllOI000O1l SHL 8 );WRITEBUF (0 , OOIl , SIZE.X , 1 , OI1OllllOl1 );END ;
SHOWCURSOR END ;PROCEDURE TCHRSETEDITVIEW.HANDLEEVENT (VAR EVENT:TEVENT);VAR O10OIIIIO0l11:TPOINT;
BEGIN INHERITED HANDLEEVENT(EVENT );IF EVENT.WHAT =EVMOUSEDOWN THEN BEGIN REPEAT IF MOUSEINVIEW (EVENT.WHERE )THEN
BEGIN MAKELOCAL (EVENT.WHERE , O10OIIIIO0l11 );SETCURSOR (O10OIIIIO0l11.X , O10OIIIIO0l11.Y );CHRVAL := CURSOR.X + 32 *
CURSOR.Y ;MESSAGE (OWNER , EVBROADCAST , CMCHARSELECTED , @ SELF )END UNTIL NOT MOUSEEVENT (EVENT , EVMOUSEMOVE );IF
EVENT.DOUBLE THEN MESSAGE (APPLICATION , EVBROADCAST , CMCHAREDIT , OWNER );CLEAREVENT (EVENT )END ELSE IF EVENT.WHAT
=EVKEYDOWN THEN WITH CURSOR DO BEGIN CASE EVENT.KEYCODE OF KBHOME :SETCURSOR (0 , Y );KBEND :SETCURSOR (SIZE.X - 1 , Y
);KBUP :IF Y > 0 THEN SETCURSOR (X , Y - 1 );KBDOWN :IF Y < SIZE.Y - 1 THEN SETCURSOR (X , Y + 1 );KBLEFT :IF X > 0 THEN
SETCURSOR (X - 1 , Y );KBRIGHT :BEGIN IF X < SIZE.X - 1 THEN SETCURSOR (X + 1 , Y )END ELSE EXIT END ;CHRVAL := CURSOR.X
+ 32 * CURSOR.Y ;MESSAGE (OWNER , EVBROADCAST , CMCHARSELECTED , @ SELF );CLEAREVENT (EVENT )END END ;
CONSTRUCTOR TCHRSETEDITDLG.INIT (NAME:PATHSTR);VAR OO1I:TRECT;BEGIN DESKTOP ^. GETEXTENT (OO1I );OO1I.A.X := OO1I.B.X -
39 ;OO1I.B.X := OO1I.A.X + 36 ;OO1I.A.Y := OO1I.A.Y + 1 ;OO1I.B.Y := OO1I.A.Y + 14 ;INHERITED INIT(OO1I , NAME );OPTIONS
:= OPTIONS OR OFFIRSTCLICK ;OO1I.ASSIGN (2 , 2 , 34 , 10 );CHRVIEW := NEW (PCHRSETEDITVIEW , INIT (OO1I ));CHRVIEW ^.
OPTIONS := CHRVIEW ^. OPTIONS OR OFSELECTABLE ;CHRVIEW ^. BLOCKCURSOR ;INSERT (CHRVIEW );OO1I.ASSIGN (7 , 11 , 29 , 12 );
CHRSTATUS := NEW (PINPUTLINE , INIT (OO1I , 32 ));CHRSTATUS ^. OPTIONS := CHRSTATUS ^. OPTIONS AND NOT OFSELECTABLE ;
INSERT (CHRSTATUS )END ;PROCEDURE TCHRSETEDITDLG.HANDLEEVENT (VAR EVENT:TEVENT);VAR OOO0IlO0OI1O:STRING ;BEGIN IF
EVENT.WHAT =EVKEYDOWN THEN IF EVENT.CHARCODE =#32THEN MESSAGE (APPLICATION , EVBROADCAST , CMCHARINVERT , @ SELF )ELSE
CASE EVENT.KEYCODE OF KBENTER :MESSAGE (APPLICATION , EVBROADCAST , CMCHAREDIT , @ SELF );KBDEL :MESSAGE (APPLICATION ,
EVBROADCAST , CMCHARDELETE , @ SELF );KBCTRLLEFT :MESSAGE (APPLICATION , EVBROADCAST , CMCHARLEFT , @ SELF );KBCTRLRIGHT
:MESSAGE (APPLICATION , EVBROADCAST , CMCHARRIGHT , @ SELF );KBCTRLPGUP :MESSAGE (APPLICATION , EVBROADCAST , CMCHARUP ,
@ SELF );KBCTRLPGDN :MESSAGE (APPLICATION , EVBROADCAST , CMCHARDOWN , @ SELF );KBSHIFTINS :MESSAGE (APPLICATION ,
EVBROADCAST , CMCHARPASTE , @ SELF );KBCTRLINS :BEGIN PASTECHR := CHRVIEW ^. CHRVAL ;FORMATSTR (OOO0IlO0OI1O ,
'Paste char = %0#%3d', CHRVIEW ^. CHRVAL );CHRSTATUS ^. SETDATA (OOO0IlO0OI1O )END END ;INHERITED HANDLEEVENT(EVENT );IF
(EVENT.WHAT =EVBROADCAST )AND (EVENT.COMMAND =CMCHARSELECTED )THEN BEGIN FORMATSTR (OOO0IlO0OI1O ,
'Dec │%0#%3d│ Hex │%0#%02x│', CHRVIEW ^. CHRVAL );CHRSTATUS ^. SETDATA (OOO0IlO0OI1O )END ;END ;
FUNCTION TCHRSETEDITDLG.GETPALETTE :PPALETTE ;CONST OOlOIOI1Oll1=CBLUEDIALOG+ CCHARPAL;O10O1I10lIIO0=CCYANDIALOG+
CCHARPAL;OIO1IO1ll10=CGRAYDIALOG+ CCHARPAL;OO10:ARRAY [ DPBLUEDIALOG.. DPGRAYDIALOG] OF STRING [ LENGTH(OOlOIOI1Oll1)]
=(OOlOIOI1Oll1, O10O1I10lIIO0, OIO1IO1ll10);BEGIN GETPALETTE := @ OO10 [ PALETTE ] END ;PROCEDURE TCHREDITVIEW.DRAW ;
VAR OI1OllllOl1:TDRAWBUFFER;OOIO,OOIl:INTEGER;OOllOI000O1l:WORD;BEGIN OOllOI000O1l := GETCOLOR (2 );FOR OOIl := 0 TO
SIZE.Y - 1 DO BEGIN FOR OOIO := 0 TO 7 DO IF FONTARRAY [ OOIl ] AND VGABITTABLE [ OOIO ] =0 THEN OI1OllllOl1 [ OOIO ]
:= 249 OR (OOllOI000O1l SHL 8 )ELSE OI1OllllOl1 [ OOIO ] := 178 OR (OOllOI000O1l SHL 8 );WRITEBUF (0 , OOIl , 8 , 1 ,
OI1OllllOl1 );END ;SHOWCURSOR END ;PROCEDURE TCHREDITVIEW.HANDLEEVENT (VAR EVENT:TEVENT);VAR O10OIIIIO0l11:TPOINT;
BEGIN INHERITED HANDLEEVENT(EVENT );IF EVENT.WHAT =EVMOUSEDOWN THEN BEGIN REPEAT IF MOUSEINVIEW (EVENT.WHERE )THEN
BEGIN MAKELOCAL (EVENT.WHERE , O10OIIIIO0l11 );SETCURSOR (O10OIIIIO0l11.X , O10OIIIIO0l11.Y );IF EVENT.BUTTONS AND
MBRIGHTBUTTON =0 THEN FONTARRAY [ CURSOR.Y ] := FONTARRAY [ CURSOR.Y ] OR VGABITTABLE [ CURSOR.X ] ELSE FONTARRAY [
CURSOR.Y ] := FONTARRAY [ CURSOR.Y ] AND NOT VGABITTABLE [ CURSOR.X ] ;PCHREDITDLG (OWNER )^. LOCK ;DRAWVIEW ;
PCHREDITDLG (OWNER )^. UNLOCK ;MESSAGE (APPLICATION , EVBROADCAST , CMCHARCHANGED , OWNER )END UNTIL NOT MOUSEEVENT
(EVENT , EVMOUSEMOVE );CLEAREVENT (EVENT )END ELSE IF EVENT.WHAT =EVKEYDOWN THEN WITH CURSOR DO BEGIN IF EVENT.CHARCODE
=#32THEN BEGIN FONTARRAY [ Y ] := FONTARRAY [ Y ] XOR VGABITTABLE [ X ] ;PCHREDITDLG (OWNER )^. LOCK ;DRAWVIEW ;
PCHREDITDLG (OWNER )^. UNLOCK ;MESSAGE (APPLICATION , EVBROADCAST , CMCHARCHANGED , OWNER )END ELSE CASE EVENT.KEYCODE
OF KBENTER :MESSAGE (APPLICATION , EVBROADCAST , CMCHARCHANGED , OWNER );KBHOME :SETCURSOR (0 , Y );KBEND :SETCURSOR
(SIZE.X - 1 , Y );KBUP :IF Y > 0 THEN SETCURSOR (X , Y - 1 );KBDOWN :IF Y < SIZE.Y - 1 THEN SETCURSOR (X , Y + 1 );
KBLEFT :IF X > 0 THEN SETCURSOR (X - 1 , Y );KBRIGHT :IF X < SIZE.X - 1 THEN SETCURSOR (X + 1 , Y )END ;CLEAREVENT (EVENT
)END END ;CONSTRUCTOR TCHREDITDLG.INIT (C,F:INTEGER);VAR O1lI110111ll:STRING ;OO1I:TRECT;O100llI0I11O1:PINPUTLINE;
BEGIN OO1I.ASSIGN (9 , 1 , 19 , 20 );INHERITED INIT(OO1I , '');OPTIONS := OPTIONS OR OFFIRSTCLICK ;CHRVAL := C ;
FONTTABLE := F ;OO1I.ASSIGN (1 , 1 , 9 , 2 );O100llI0I11O1 := NEW (PINPUTLINE , INIT (OO1I , 8 ));O100llI0I11O1 ^.
OPTIONS := O100llI0I11O1 ^. OPTIONS AND NOT OFSELECTABLE ;O1lI110111ll := INTTOSTR (F )+ ':'+ INTTOSTR (C );
O100llI0I11O1 ^. SETDATA (O1lI110111ll );INSERT (O100llI0I11O1 );OO1I.ASSIGN (1 , 2 , 9 , 18 );CHREDITOR := NEW
(PCHREDITVIEW , INIT (OO1I ));CHREDITOR ^. OPTIONS := CHREDITOR ^. OPTIONS OR OFSELECTABLE ;CHREDITOR ^. BLOCKCURSOR ;
INSERT (CHREDITOR )END ;PROCEDURE TCHREDITDLG.SIZELIMITS (VAR MIN,MAX:TPOINT);BEGIN INHERITED SIZELIMITS(MIN , MAX );
MIN.X := 10 END ;CONSTRUCTOR TICONVIEW.INIT (X,Y,STCHR,ILEN:INTEGER);VAR OO1I:TRECT;BEGIN OO1I.ASSIGN (X , Y , X + ILEN ,
Y + 1 );INHERITED INIT(OO1I );OPTIONS := OPTIONS OR (OFSELECTABLE + OFFIRSTCLICK );EVENTMASK := EVENTMASK OR EVBROADCAST
;STARTCHR := STCHR ;ICONLEN := ILEN END ;PROCEDURE TICONVIEW.DRAW ;VAR OI1OllllOl1:TDRAWBUFFER;OOllOI000O1l:WORD;
OOIO:BYTE;BEGIN IF STATE AND SFDISABLED <> 0 THEN OOllOI000O1l := GETCOLOR (1 )ELSE IF STATE AND SFFOCUSED =0 THEN
OOllOI000O1l := GETCOLOR (2 )ELSE OOllOI000O1l := GETCOLOR (8 );FOR OOIO := 0 TO SIZE.X - 1 DO OI1OllllOl1 [ OOIO ] :=
(STARTCHR + OOIO )OR (OOllOI000O1l SHL 8 );WRITELINE (0 , 0 , SIZE.X , 1 , OI1OllllOl1 )END ;
PROCEDURE TICONVIEW.HANDLEEVENT (VAR EVENT:TEVENT);BEGIN INHERITED HANDLEEVENT(EVENT );CASE EVENT.WHAT OF EVBROADCAST
:IF EVENT.COMMAND =CMCOMMANDSETCHANGED THEN BEGIN SETSTATE (SFDISABLED , NOT COMMANDENABLED (APPCOMMAND ));DRAWVIEW END ;
EVMOUSEDOWN :BEGIN MESSAGE (APPLICATION , EVCOMMAND , APPCOMMAND , @ SELF );CLEAREVENT (EVENT )END ;EVKEYDOWN :IF
EVENT.KEYCODE =KBENTER THEN BEGIN MESSAGE (APPLICATION , EVCOMMAND , APPCOMMAND , @ SELF );CLEAREVENT (EVENT )END END END
;PROCEDURE TICONVIEW.SETSTATE (ASTATE:WORD;ENABLE:BOOLEAN);BEGIN INHERITED SETSTATE(ASTATE , ENABLE );IF ASTATE
=SFFOCUSED THEN DRAWVIEW END ;CONSTRUCTOR TTOOLBARDLG.INIT (STCHR,ILEN,ICONS:INTEGER;STARTCMD:WORD);VAR OIlO:INTEGER;
OO1I:TRECT;OOllO111O0ll:PICONVIEW;BEGIN OO1I.ASSIGN (1 , 1 , 8 , ICONS * 2 + 2 );INHERITED INIT(OO1I , '');OPTIONS :=
OPTIONS OR OFFIRSTCLICK ;STATE := STATE AND NOT SFSHADOW ;FLAGS := FLAGS AND NOT WFCLOSE ;FOR OIlO := 0 TO ICONS - 1
DO BEGIN OOllO111O0ll := NEW (PICONVIEW , INIT (2 , OIlO * 2 + 1 , OIlO * ILEN + STCHR , ILEN ));OOllO111O0ll ^.
APPCOMMAND := STARTCMD + OIlO ;INSERT (OOllO111O0ll )END ;FOR OIlO := 1 TO ICONS - 1 DO BEGIN OO1I.ASSIGN (1 , OIlO * 2
, SIZE.X - 1 , OIlO * 2 + 1 );INSERT (NEW (PSTATICTEXT , INIT (OO1I , FILLSTR ('─', ILEN + 2 ))))END ;SELECTNEXT (FALSE
)END ;PROCEDURE TTOOLBARDLG.SIZELIMITS (VAR MIN,MAX:TPOINT);BEGIN INHERITED SIZELIMITS(MIN , MAX );MIN.X := 7 END ;END .